﻿using System;
using System.Windows.Input;

namespace Automator
{
    public static class AutomatorCommands
    {
        public static readonly RoutedUICommand SaveAll = new RoutedUICommand("Save All", "SaveAllCommand", typeof(MainWindow), new InputGestureCollection
                                                                    {
                                                                        new KeyGesture(Key.S, ModifierKeys.Control | ModifierKeys.Shift, "Ctrl+Shift+S")
                                                                    });
        
        public static readonly RoutedUICommand NewWorkflow = new RoutedUICommand("New Workflow", "NewWorkflowCommand", typeof(MainWindow), new InputGestureCollection
                                                                        {
                                                                            new KeyGesture(Key.N, ModifierKeys.Control, "Ctrl+N")
                                                                        });
        
        public static readonly RoutedUICommand EditWorkflow = new RoutedUICommand("Edit Workflow", "EditWorkflowCommand", typeof(MainWindow));
        
        public static readonly RoutedUICommand RemoveWorkflow = new RoutedUICommand("Remove Workflow", "RemoveWorkflowCommand", typeof(MainWindow));
        
        public static readonly RoutedUICommand DeleteWorkflow = new RoutedUICommand("Delete Workflow", "DeleteWorkflowCommand", typeof(MainWindow));
        
        public static readonly RoutedUICommand RunWorkflow = new RoutedUICommand("Run Workflow", "RunWorkflowCommand", typeof(MainWindow), new InputGestureCollection
                                                                        {
                                                                            new KeyGesture(Key.F5, ModifierKeys.None, "F5")
                                                                        });
        
        public static readonly RoutedUICommand ResetWorkflow = new RoutedUICommand("Reset Workflow", "ResetWorkflowCommand", typeof(MainWindow), new InputGestureCollection
                                                                          {
                                                                              new KeyGesture(Key.F2, ModifierKeys.Control, "Ctrl+F2")
                                                                          });
        
        public static readonly RoutedUICommand OpenWorkflow = new RoutedUICommand("Open Workflow", "OpenWorkflowCommand", typeof(MainWindow), new InputGestureCollection
                                                                         {
                                                                             new KeyGesture(Key.O, ModifierKeys.Control, "Ctrl+O")
                                                                         });
        
        public static readonly RoutedUICommand NewSolution = new RoutedUICommand("New Solution", "NewSolutionCommand", typeof(MainWindow), new InputGestureCollection
                                                                        {
                                                                            new KeyGesture(Key.N, ModifierKeys.Control | ModifierKeys.Shift, "Ctrl+Shift+N")
                                                                        });
        
        public static readonly RoutedUICommand OpenSolution = new RoutedUICommand("Open Solution", "OpenSolutionCommand", typeof(MainWindow), new InputGestureCollection
                                                                         {
                                                                             new KeyGesture(Key.O, ModifierKeys.Control | ModifierKeys.Shift, "Ctrl+Shift+O")
                                                                         });
        
        public static readonly RoutedUICommand AddTask = new RoutedUICommand("Add Task", "AddTaskCommand", typeof(MainWindow), new InputGestureCollection
                                                                    {
                                                                        new KeyGesture(Key.Insert, ModifierKeys.Control, "Ctrl+Ins")
                                                                    });
        
        public static readonly RoutedUICommand AddDependency = new RoutedUICommand("Add Dependent Task", "AddDependencyCommand", typeof(MainWindow), new InputGestureCollection
                                                                          {
                                                                              new KeyGesture(Key.Insert, ModifierKeys.Control | ModifierKeys.Shift, "Ctrl+Shift+Ins")
                                                                          });
        
        public static readonly RoutedUICommand EditTask = new RoutedUICommand("Edit Task", "EditTaskCommand", typeof(MainWindow));
        
        public static readonly RoutedUICommand DeleteTask = new RoutedUICommand("Delete Task", "DeleteTaskCommand", typeof(MainWindow), new InputGestureCollection
                                                                       {
                                                                           new KeyGesture(Key.Delete, ModifierKeys.None, "Del")
                                                                       });
        
        public static readonly RoutedUICommand RunTask = new RoutedUICommand("Run Task", "RunTaskCommand", typeof(MainWindow), new InputGestureCollection
                                                                    {
                                                                        new KeyGesture(Key.F10, ModifierKeys.None, "F10")
                                                                    });
        
        public static readonly RoutedUICommand RunTaskWithDependencies = new RoutedUICommand("Run Task With Dependencies", "RunTaskWithDependenciesCommand", typeof(MainWindow), new InputGestureCollection
                                                                                    {
                                                                                        new KeyGesture(Key.F11, ModifierKeys.None, "F11")
                                                                                    });
        
        public static readonly RoutedUICommand MoveTaskUp = new RoutedUICommand("Move Task Prior", "MoveTaskUpCommand", typeof(MainWindow));
        
        public static readonly RoutedUICommand MoveTaskDown = new RoutedUICommand("Move Task Next", "MoveTaskDownCommand", typeof(MainWindow));
        
        public static readonly RoutedUICommand Cut = new RoutedUICommand("Cut Task", "CutTaskCommand", typeof(MainWindow), new InputGestureCollection
                                                                {
                                                                    new KeyGesture(Key.X, ModifierKeys.Control, "Ctrl+X")
                                                                });
        
        public static readonly RoutedUICommand Copy = new RoutedUICommand("Copy Task", "CopyTaskCommand", typeof(MainWindow), new InputGestureCollection
                                                                 {
                                                                     new KeyGesture(Key.C, ModifierKeys.Control, "Ctrl+C")
                                                                 });
        
        public static readonly RoutedUICommand Paste = new RoutedUICommand("Paste Task", "PasteTaskCommand", typeof(MainWindow), new InputGestureCollection
                                                                  {
                                                                      new KeyGesture(Key.V, ModifierKeys.Control, "Ctrl+V")
                                                                  });
        
        public static readonly RoutedUICommand About = new RoutedUICommand("About Automator", "AboutAutomatorCommand", typeof(MainWindow));
        
        public static readonly RoutedUICommand ProjectPage = new RoutedUICommand("Automator at CodePlex.com", "ProjectPageCommand", typeof(MainWindow));
        
        public static readonly RoutedUICommand OnlineDocumentation = new RoutedUICommand("Online Documentation", "OnlineDocumentationCommand", typeof(MainWindow));

        public static readonly RoutedUICommand ViewOutput = new RoutedUICommand("Output", "ViewOutputCommand", typeof(MainWindow));
        
        public static readonly RoutedUICommand ViewSolution = new RoutedUICommand("Solution Explorer", "ViewSolutionCommand", typeof(MainWindow), new InputGestureCollection
                                                                         {
                                                                             new KeyGesture(Key.F7, ModifierKeys.None, "F7")
                                                                         });
        
        public static readonly RoutedUICommand ViewStartPage = new RoutedUICommand("Start Page", "ViewStartPageCommand", typeof(MainWindow));
        
        public static readonly RoutedUICommand ViewClipboard = new RoutedUICommand("Task Clipboard", "ViewClipboardCommand", typeof(MainWindow));
        
        public static readonly RoutedUICommand SqlSettings = new RoutedUICommand("SQL Server Connection", "SqlSettingsCommand", typeof(MainWindow));
        
        public static readonly RoutedUICommand ProxySettings = new RoutedUICommand("Proxy", "ProxySettingsCommand", typeof(MainWindow));
    }
}
